public class JudgePassword {
    public static String judgePassword(String str){ //判断密码强度
        try {
            Checker.checkPassword(str);   //审查
            boolean num = false;  //判断是否有数字和字母,出现一次即为true
            boolean low = false;
            boolean up = false;
            for(int i = 0; i < str.length();i++){
                if(Character.isDigit(str.charAt(i))){
                    num = true;
                }
                if(Character.isLowerCase(str.charAt(i))){
                    low = true;
                }
                if(Character.isUpperCase(str.charAt(i))){
                    up = true;
                }
            }

            if(str.length()<8 || str.matches("\\p{Alpha}{8,}|\\d{8,}")){ //利用正则匹配判断强中弱
                return "密码的强度是:弱"; 
            }
            else if(str.length()>=8 && num && (low^up)){
                return "密码的强度是:中";
            }
            else { //(str.length()>=8 && num && low && up)
                return "密码的强度是:强";
            }
        } 
        catch (MyException e) {
            return "请输入数字或者大小写字母.密码长度不超过16";
        }
    }
}
